範囲選択の基礎


セル範囲指定の書式
1 「Rxnge」によるセル範囲指定
選択範囲の指定は、エクセルのシートに表示されている列番号(アルファベット)と行番号(数字)を組み合わせて指定します。A列5行目は「Range("A5")」
とします。
[ 参照形式による指定方法 ]
絶対参照を行う場合は、行番号または列番号の前に「$」マークを付けます。
行・列ともに絶対参照・・・・・・・・・・・ Range("$A$1:$B$5").Select
列が絶対参照・行が相対参照・・・・ Range("$A1:$B5").Select
列が相対参照・行が絶対参照・・・・ Range("A$1:B$5").Select
行・列ともに相対参照・・・・・・・・・・・ Range("A1:B5").Select
2 「Rxnge」で範囲指定を行うときの留意点
範囲選択に際して、Range オブジェクトに対してSelectメソッドやActivateメソッドを使用するときは、そのセルを含むワークシートがアクティブになっていなければなりません。
アクティブでないワークシートのセルを選択するには一旦ワークシートをアクティブにしてからセル選択を行う必要があります。
Worksheets("TEST").Select
Range("A1:B5").Select
非アクティブシートに対し、Worksheets("TEST").Range("A1:B5").Select とすると、エラーになります。
3 「Cells」によるセル範囲指定
選択範囲の指定は、列番号はセルの列番号の「A」を 1
とした列の左端からの数値による番号。行番号は、A1形式と同じように、セルの行番号(数値)としてこれを組み合わせて指定します。
Cellaによる場合は行番号,列番号の順で指定します。A列5行目は「Cells(5,1)」
とします。
なお、Cellsプロパティが参照できるのは、「1
つのセル」か、「全セル」かのどちらかだけです。複数のセル範囲を参照するときは、Rangeプロパティと組み合わせて範囲の左上隅と右下隅のセルを指定します。
「A1:B5」の範囲を指定するには、Range(Cells(1,1),Cells(5,2)).Select
というようにします。


Selection と Activecell
複数セル範囲を選択した場合、「Selection」は選択範囲の全てのセルに有効であるのに対して、「ActiveCell 」は選択範囲の左上セル1箇所のみ有効となります。

|
Sub test1()
Range("A1:C4").Select
ActiveCell.Value = 10
End Sub
選択範囲「A1:C4」のアクティブセルは選択範囲の左上隅セルだけなので、「A1」に「10」が入力される。 |

|
Sub test2()
Range("A1:C4").Select
Selection.Value = 10
End Sub
選択範囲「A1:C4」のすべての選択範囲に「10」が入力される。 |

|
Sub test3()
Range("B2:D5").Select
Selection.Range("B2").Activate
End Sub
選択範囲「B2:D5」の中で、さらに選択を行うときは、当初の選択範囲の左上隅セルを基準セル「A1」として相対的な位置を選択するので、セルC3が基準セルからみたB2になる。 |

|
Sub test4()
Range("B2:D4").Select
Range("A1") = 10
End Sub
Range("A1")
は、選択範囲内での選択ではないので、最初の範囲選択は無視される。 |


セル単位の選択
処理内容:A1を選択します。
Sub CellsSelect1()
Worksheets("Sheet1").Select
Range("A1").Select
End Sub
Sub CellsSelect2()
Worksheets("Sheet1").Select
Range("A1").Activate
End Sub
Sub CellsSelect3()
Worksheets("Sheet1").Select
Cells(1,1).Select
End Sub
Sub CellsSelect4()
Worksheets("Sheet1").Select
Cells(1,1).Activate
End Sub
処理内容:A1〜C5を選択します。
Sub CellsSelect5()
Worksheets("Sheet1").Select
Range("A1:C5").Select
End Sub
Sub CellsSelect6()
Worksheets("Sheet1").Select
Range(Cells(1, 1), Cells(5, 3)).Select
End Sub
処理内容:A1,B5,D6を選択します。
Sub CellsSelect7()
Worksheets("Sheet1").Select
Range("A1,B5,D6").Select
End Sub
Sub CellsSelect8()
Worksheets("Sheet1").Select
Union(Cells(1, 1), Cells(5, 2), Cells(6, 4)).Select
End Sub
処理内容:A1〜C3、B5〜D7を選択します。
Sub CellsSelect9()
Worksheets("Sheet1").Select
Range("A1:C3,B5:D7").Select
End Sub
Sub CellsSelect10()
Worksheets("Sheet1").Select
Union(Range(Cells(1, 1), Cells(3, 3)), Range(Cells(5, 2),Cells(7, 4))).Select
End Sub
処理内容:Sheet1の全てのセルを選択します。
Sub CellsSelect9()
Worksheets("Sheet1").Select
Cells.Select
End Sub


行単位の選択
処理内容:4行目を選択します。
Sub RowsSelect1()
Worksheets("Sheet1").Select
Rows("4:4").Select '基本形
End Sub
Sub RowsSelect2()
Worksheets("Sheet1").Select
Rows(4).Select '省略形:単一行を選択の場合のみ行番号だけでも可
End Sub
処理内容:4〜6行目を選択します。
Sub RowsSelect3()
Worksheets("Sheet1").Select
Rows("4:6").Select '連続行の選択はRowsプロパティ、Rangeプロパティどちらでも可。
End Sub
Sub RowsSelect4()
Worksheets("Sheet1").Select
Range("4:6").Select '連続行の選択はRowsプロパティ、Rangeプロパティどちらでも可。
End Sub
処理内容:4行目、6行目、8行目を選択します。
Sub RowsSelect5()
Worksheets("Sheet1").Select
Range("4:4,6:6,8:8").Select '不連続複数行の選択は、Rowsプロパティ不可。
End Sub
処理内容:4〜5行、7〜8行、10行目を選択します。
Sub RowsSelect6()
Worksheets("Sheet1").Select
Range("4:5,7:8,10:10").Select '不連続複数行の選択は、Rowsプロパティ不可。
End Sub


列単位の選択
処理内容:A列を選択します。
Sub ColimnsSelect1()
Worksheets("Sheet1").Select
Columns("A:A").Select '基本形
End Sub
Sub ColimnsSelect2()
Worksheets("Sheet1").Select
Columns("A").Select '省略形
End Sub
Sub ColimnsSelect2()
Worksheets("Sheet1").Select
Columns(1).Select '省略形:単一列を選択の場合列番号だけでも可
End Sub
処理内容:B〜C列を選択します。
Sub ColimnsSelect3()
Worksheets("Sheet1").Select
Columns("B:C").Select
End Sub
Sub ColimnsSelect3-1()
Worksheets("Sheet1").Select
Range("B:C").Select
End Sub
Sub ColimnsSelect4()
Worksheets("Sheet1").Select
Range(Columns(2), Columns(3)).Select
End Sub
処理内容:A列、C列、E列を選択します。
Sub ColimnsSelect5()
Worksheets("Sheet1").Select
Range("A:A,C:C,E:E").Select
End Sub
処理内容:A〜B列、D〜E列、G〜H列を選択します。
Sub ColimnsSelect6()
Worksheets("Sheet1").Select
Range("A:B,D:E,G:H").Select
End Sub


リスト範囲の選択
リスト範囲の行や列が追加されたり、領域が常に変動するリストの範囲を選択するには、
「CurrentRegion」プロパティまたは「UsedRange」プロパティを使用します。
「CurrentRegion」プロパティは、基準セルを含む連続したセル範囲選択で空白セルで囲まれた領域を選択します。
従って、リスト範囲に隣接してリストと関係がないデータが登録されていると、その登録範囲も選択されてしまいます。リスト範囲だけを限定して選択するときは、リストに隣接するセルがすべて空白になっている必要があります。
「UsedRange」プロパティは、シートで使用されているセルの左上端セルから右下端セルの矩形範囲(空白列・行を含む)を選択します。

|

|
CurrentRegionでの選択範囲 |
UsedRangeでの選択範囲 |
処理内容:基準セル(A1)を含む連続したセル範囲を選択します。
Sub ListSelect1()
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
End Sub
処理内容:使用されたセル範囲を選択します。
Sub ListSelect2()
Worksheets("Sheet1").Select
ActiveSheet.UsedRange.Select
End Sub


変数によるセル選択
処理内容:変数に定数を用いてA1:D5のセル範囲を選択します。
Sub ListSelect3()
Dim 左上端 As String,右下端 As String
Worksheets("Sheet1").Select
左上端 ="A1"
右下端 ="D5"
Range(左上端 & ":" & 右下端).Select
End Sub
処理内容:リストの右下隅セルアドレスを取得してセル範囲を選択します。
Sub ListSelect4()
Dim 左上端 As String,右下端 As String
Worksheets("Sheet1").Select
左上端 ="A1"
右下端 = Range(左上端).SpecialCells(xlLastCell).Address
Range(左上端 & ":" & 右下端).Select
End Sub
処理内容:リストの最下行番号と右端列番号を取得してセル範囲を選択します。
Sub ListSelect5()
Dim 最下行番号 As Long,右端列番号 As Integer
Worksheets("Sheet1").Select
最下行番号=Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
右端列番号=Cells(1,ActiveSheet.Columns.Count).End(xlToLeft).Column
Range(Cells(1,1),Cells(最下行番号,右端列番号)).Select
End Sub
処理内容:リストの四隅の行・列番号を取得してセル範囲を選択します。
Sub ListSelect6()
Dim Ystart As Long,Yend As Long
Dim Xstart As Integer,Xend As Integer
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
Ystart= Selection.Row '最上行番号
Yend = Ystart + Selection.Rows.Count - 1 '最下行番号
Xstart= Selection.Column '左端列番号
Xend = Ystart + Selection.Columns.Count - 1 '右端列番号
Range(Cells(Ystart,Xstart),Cells(Yend,Xend)).Select
End Sub
処理内容:見出し行範囲を選択します。
Sub ListSelect7()
Dim LeftTop As String,RightTop As String
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
LeftTop = Selection.Item(1).Address '左上端番地
RightTop = Selection.Item(Selection.Columns.Count).Address '右上端番地
Range(LeftTop & ":" & RightTop).Select
End Sub
処理内容:見出し列範囲を選択します。
Sub ListSelect8()
Dim 先頭行番号 As Long,最下行番号 As Long
Dim 左端列番号 As Integer
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
先頭行番号 = Selection.Row
最下行番号 = 先頭行番号 + Selection.Rows.Count - 1
左端列番号 = Selection.Column
Range(Cells(先頭行番号, 左端列番号),Cells(最下行番号, 左端列番号)).Select
End Sub
処理内容:見出し行範囲を選択します。右上端セル番地を変数で指定します。
Sub ListSelect9()
Dim 右上端 As String
Worksheets("Sheet1").Select
Range("A1").CurrentRegion.Select
右上端 = Selection.Item(Selection.Columns.Count).Address
Range("A1" & ":" & 右上端).Select
End Sub
処理内容:見出し行を除いたデータ範囲を選択します。B列下端行番号のみ変数指定します。
Sub ListSelect10()
Dim 最下行番号 As Long
Worksheets("Sheet1").Select
最下行番号 = Cells(ActiveSheet.Rows.Count, 2).End(xlUp).Row
Range("A2:B" & 最下行番号).Select
End Sub

